Switching to a single radio chain for voice communications

ABSTRACT

In general, the subject matter described in this disclosure can be embodied in methods, devices, and program products for selecting a wireless transmission mechanism. A computing device receives a request to begin a full-duplex voice communication session with a remote computing system. The computing device identifies that it has wirelessly connected to both a WWAN access point and a WLAN access point. The computing device determines whether a level of non-voice session data that is queued for transmission or receipt by the computing device falls beneath a threshold level of data, and as a result, switches to using a single one of multiple WLAN radio chains. The computing device communicates data over the single one of the multiple WLAN radio chains, including voice session data from the full-duplex voice communication session.

TECHNICAL FIELD

This document generally relates to switching to a single radio chain forvoice communications.

BACKGROUND

Some computing devices can wirelessly communicate using multipledifferent wireless communication mechanisms. For example, a computingdevice may be able to communicate with either a Wireless Local AreaNetwork (WLAN) or a Wireless Wide Area Network (WWAN). Communicatingwith either of these types of network types may involve sending andreceiving data using an amplifier and an antenna that are designedspecifically for that type of network. The combination of an amplifierand antenna, potentially with other physical hardware components, issometimes called a radio chain. A computing device may include multipleradio chains for a particular network, for example, to enable thecomputing device to simultaneously communicate with the network usingmultiple different signals that have different respective frequencies.

SUMMARY

This document describes techniques, methods, systems, and othermechanisms for switching to a single radio chain for voicecommunications.

As additional description to the embodiments described below, thepresent disclosure describes the following embodiments.

Embodiment 1 is a computer-implemented for selecting a wirelesstransmission mechanism. The method comprises determining, by a computingdevice, that the computing device has received a request to begin afull-duplex voice communication session with a remote computing system,wherein the computing device includes a wireless wide area network(WWAN) radio chain arranged to communicate using WWAN technology andmultiple wireless local area network (WLAN) radio chains arranged tocommunicate using WLAN technology. The method comprises identifying, bythe computing device, that the computing device has wirelessly connectedto both a WWAN access point that is communicating using the WWANtechnology and a WLAN access point that is communicating using the WLANtechnology. The method comprises determining, by the computing device inresponse to having identified that the computing device has wirelesslyconnected to both the WWAN access point and the WLAN access point andhaving determined that the computing device has received the request tobegin the full-duplex voice communication session, whether a level ofnon-voice session data that is queued for transmission or receipt by thecomputing device falls beneath a threshold level of data. The methodcomprises switching, by the computing device as a result of thecomputing device having determined that the level of non-voice sessiondata that is queued for transmission or receipt by the computing devicefalls beneath the threshold level of data, to using a single one of themultiple WLAN radio chains, and communicating data over the single oneof the multiple WLAN radio chains, including voice session data from thefull-duplex voice communication session, in distinction to communicatingdata over more than one of the multiple WLAN radio chains.

Embodiment 2 is the method of embodiment 1, wherein the computing devicehad been communicating data over more than one of the multiple WLANradio chains immediately prior to the computing device switching tousing the single one of the multiple WLAN radio chains.

Embodiment 3 is the method of embodiment 1 or 2, wherein the computingdevice is configured to communicate data over the WWAN radio chain,including the voice session data from the full-duplex voicecommunication session, as a result of the computing device havingdetermined that the level of non-voice session data that is queued fortransmission or receipt by the computing device does not fall beneaththe threshold level of data.

Embodiment 4 is the method of any one of embodiments 1 through 3,further comprising: determining, by the computing device and while thecomputing device is communicating data over the single one of themultiple WLAN radio chains, that a quality of WLAN communications dropsbelow a threshold quality level; and switching, by the computing deviceas a result of the computing device having determined that the qualityof WLAN communications dropped below the threshold quality level, fromusing the single one of the multiple WLAN radio chains to using the WWANradio chain, and communicating data over the WLAN radio chain, includingvoice session data from the full-duplex voice communication session.

Embodiment 5 is the method of any one of embodiments 1 through 4,further comprising: determining, by the computing device and while thecomputing device is communicating data over the single one of themultiple WLAN radio chains, that the level of non-voice session datathat is queued for transmission or receipt by the computing device isgreater than a second threshold level of data, wherein the secondthreshold level of data is greater than the first threshold level ofdata; and switching, by the computing device as a result of thecomputing device having determined that the level of non-voice sessiondata that is queued for transmission or receipt by the computing deviceis greater than the second threshold level of data, from using thesingle one of the multiple WLAN radio chains to using the WWAN radiochain, and communicating data over the WWAN radio chain, including voicesession data from the full-duplex voice communication session.

Embodiment 6 is the method of any one of embodiments 1 through 5,wherein the computing device communicating data over the single one ofthe multiple WLAN radio chains, including the voice session data fromthe full-duplex voice communication session, is further in distinctionto the computing device communicating data over the WWAN radio chain,such that data is being transmitted over only the single one of themultiple WLAN radio chains.

Embodiment 7 is the method of any one of embodiments 1 through 6,wherein: the single one of the multiple WLAN radio chains includes afirst amplifier and a first antenna; a second one of the multiple WLANradio chains includes a second amplifier and a second antenna; the WWANradio chain includes a third amplifier and a third antenna; and thefirst antenna, the second antenna, and the third antenna are physicallyseparated from each another.

Embodiment 8 is the method of any one of embodiments 1 through 7,wherein: the WLAN technology comprises Wi-Fi technology; and the WWANtechnology comprises cellular technology that uses one or more of GlobalSystem for Mobiles (GSM), Code Division Multiple Access (CDMA), orLong-Term Evolution (LTE).

Embodiment 9 is the method of any one of embodiments 1 through 8,wherein: communications using one or more of the WLAN radio chainscommunicate using center channel frequencies between 2 GHz and 30 GHz;and communications using the WWAN radio chain communicate using centerchannel frequencies between 300 MHz and 2000 MHz.

Embodiment 10 is the method of any one of embodiments 1 through 9,wherein the level of non-voice session data that is queued fortransmission or receipt comprises a trend level at which non-voicesession data that is queued for transmission or receipt is increasing ordecreasing.

Embodiment 11 is directed to a computing device, comprising: a wirelesswide area network (WWAN) radio chain arranged to communicate usingwireless WWAN technology; multiple wireless local area network (WLAN)radio chains arranged to communicate using WLAN technology; one or moreprocessors; and one or more computer-readable devices includinginstructions that, when executed by the one or more processors, causeperformance of operations according to the method of any one ofembodiments 1 through 10.

Particular implementations can, in certain instances, realize one ormore of the following advantages. A computing device that switches to asingle WLAN radio chain for voice communications may use less power andtherefore less battery capacity than if the computing devicecommunicated using multiple WLAN radio chains or one or more WWAN radiochains. As such, the techniques described in this disclosure may notonly enable a computing device to use less battery capacity, but mayenable a computing device to decrease an amount of usage of a WWANnetwork. Reducing WWAN usage can benefit not only a user of thecomputing device (e.g., by saving a data allowance for othercommunications), but can also increase data throughput for other usersof the WWAN network.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features,objects, and advantages will be apparent from the description anddrawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 shows a state diagram that illustrates a computing deviceswitching between different wireless communication modes.

FIG. 2 shows a flowchart of a process for determining whether tocommunicate using a WWAN radio chain or a single WLAN radio chain.

FIG. 3 shows a flowchart of a process for determining whether to switchfrom communicating using a single WLAN radio chain to using a WWAN radiochain.

FIG. 4 shows a flowchart of a process for determining whether tocommunicate using a single WLAN radio chain or at least two WLAN radiochains.

FIG. 5 shows various different mechanisms for determining whether to usea WWAN radio chain or a single WLAN radio chain.

FIG. 6 is a conceptual diagram of a system that may be used to implementthe systems and methods described in this document.

FIG. 7 is a block diagram of computing devices that may be used toimplement the systems and methods described in this document, as eithera client or as a server or plurality of servers.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

This document generally describes determining whether to use a singleradio chain for voice communications.

Some computing devices include hardware that enables communications overmultiple different types of wireless networks, such as a WWAN (e.g., anLTE network of distributed base stations provided by atelecommunications company) and a WLAN (e.g., a network of one or moreWi-Fi routers at a coffee shop).

Protocols for some types of WLAN technologies may be designed tosupport, and may even default to, simultaneously using multiplefrequency bands for communications between a computing device and anaccess point. Using multiple frequencies at the same time can increasedata throughput, but can also increase power consumption. For example, acomputing device that is wirelessly transmitting a large file may beable to transmit the file faster, and potentially even with less powerconsumption, using WLAN technology than WWAN technology.

The benefits of WLAN technology, however, may not be as evident when auser of a computing device is participating in a voice communicationsession (e.g., a telephone call or video conference in which at leasttwo individuals are speaking to each other in real time using at leasttwo respective computing devices). This is because much of the powerconsumed by a computing device during a voice communication session isdue to WLAN hardware components waiting in an “ON” state to receivevoice data packets. This extended amount of waiting may occur because atleast some WLAN protocols do not schedule data transmissions ahead oftime and therefore may have to wait for the sending device to identify amoment during which no other devices on the WLAN are transmitting and totransmit at that moment. A computing device engaged in a voicecommunication session may use less power and therefore less batteryconsumption if that computing device is connected to a WWAN rather thana WLAN that is using multiple radio chains.

Still, there are benefits to computing device using a WLAN rather than aWWAN. For example, it can be beneficial to limit the amount of datacommunicated over a WWAN because users sometimes pay to use a WWANnetwork, either based on an amount of data communicated, or based on asubscription model in which the user is allocated a particular amount ofdata or a particular number of communication minutes per month. And evenif the user has a purportedly unlimited data plan, a WWAN networkprovider may throttle (i.e., slow) communications if a user communicatestoo much data over a given time period. Further, using WWAN networkresources rather than those of an available WLAN network may limit thespeed or amount of data that other users in the same geographical regioncan communicate using the WWAN network.

At least some of the above-described disadvantages can be avoided byusing a single WLAN radio chain in certain circumstances. A single WLANradio chain may not provide a same level of throughput as using one ormore WWAN radio chains in some configurations, but a single WLAN radiochain may consume less power, even if waiting in an “ON” state for datatransmissions, relative to a WWAN. Moreover, a single WLAN radio chainmay provide sufficient data throughput to support a full duplex voicecommunication session (e.g., a voice communication session in which bothusers can speak at the same time). Accordingly, a mechanism thatswitches a computing device to a single WLAN radio chain when thecomputing device is participating in or about to participate in a voicecommunication session may save battery usage and WWAN data usage, atleast with respect to alternative mechanisms in which two or more WLANradio chains are used or a WWAN is used.

FIG. 1 shows a state diagram that illustrates a computing deviceswitching between different wireless communication modes. The modesinclude a WWAN mode 110, a WLAN (multiple radio chains) mode 120, and aWLAN (single radio chain) mode 130. A computing device that is operatingin the WLAN (single radio chain) mode 130 uses a single WLAN radio chainto communicate with a WLAN access point. While in the WLAN (single radiochain) mode 130, the computing device may not use a second WLAN radiochain and may not use a WWAN radio chain to wirelessly communicate at asame time (e.g., within a 1, 10, 50, 100, or 1000 ms time window ofhaving communicated in mode 130).

The state diagram of FIG. 1 illustrates various modes in which thecomputing device may wirelessly communicate with remote devicesaccessible through the internet when a WWAN and a WLAN are bothavailable to provide such connectivity. In other words, the computingdevice may have recently performed any necessary handshaking andauthentication procedures to establish communication capabilities withboth types of networks, and therefore may be able to select one of thenetworks for its communications. This is in contrast to situations inwhich the computing device is unable to communicate with both a WWAN anda WLAN, for example, because signals for one of the network types iseither too weak or the computing device has not provided sufficientauthentication credentials for one of the networks.

When a voice communication session is not active, the computing devicemay default to communicating over the WLAN both to save WWAN resourcesand because WLAN communications may be relatively power efficient inmany different scenarios. For example, data communications that occur inbursts may consume less battery power when performed over a WLAN thanover a WWAN. In some implementations, the computing device will alwaysuse multiple WLAN radio chains when a WLAN network is available and thecomputing device is not engaged in a voice communication session.

Still, in some implementations, a computing device that is not engagedin a voice communication session may select to communicate using asingle WLAN radio chain (mode 130) rather than multiple WLAN radiochains (mode 120). After a call has ended (at state 150), or before acall has begun, for example, the selection between these different modesmay be performed by determination 180 (described in additional detailwith respect to FIG. 4). This determination may involve the computingdevice deciding to use the single WLAN radio chain only when certaincircumstances are present, for example, when the amount of data queuedfor communications falls below a threshold, or when the amount of dataqueued for communication falls below the threshold and the data isqueued for communication with at least a threshold number of devices,such that the computing device will need to be listening much of thetime. The computing device may otherwise default to using multiple WLANradio chains. In some implementations (not illustrated in FIG. 1), thecomputing device may communicate over the WWAN when a voicecommunication is not ongoing, even though a WLAN is available. In someimplementations, the computing device may only communicate over a singleWLAN radio chain (mode 130) when a voice communication is ongoing, andtherefore may never communicate over a single WLAN radio chain (mode130) when a voice communication is not ongoing.

Upon a computing device determining that voice communication (e.g., acall) is beginning (at state 140), the computing device may performdetermination 160 (described in additional detail with respect to FIG.2). The determination 160 may include deciding whether the computingdevice should communicate with the WWAN (mode 110) or with a singleradio chain of the WLAN (mode 130), and can involve weighing multipledifferent factors. One of these factors, for example, can be whether alevel of non-voice data that is queued for communication by thecomputing device falls beneath a threshold level of data.

A small queue of data queued for communication may indicate that much orall of the wireless communication will involve data pertaining to thevoice communication session data, and therefore that a single WLAN radiochain can provide the necessary bandwidth. Should a larger queue of databe present, the computing device may select to communicate over the WWAN(using a single radio chain or multiple radio chains), because the WWANmay provide a greater amount of bandwidth to handle the greater amountof data queued for communication, although potentially at a greater costin power consumption.

The analysis of the level of non-voice session data that is queued forcommunication can involve an analysis of an amount of data queued forcommunication, or an analysis of data that is derived from suchinformation, such as a trend level that indicates whether data queuedfor communication has been increasing or decreasing. The non-voice datathat is analyzed may be exclusively data that does not belong to anyvoice communication session, or may involve non-voice data mixed in withvoice communication data. In other words, the analysis of the level ofnon-voice session data that is queued for communication can be of aqueue of all data that is queued for communication, even if some of thatdata includes voice communication session data. The level of data thatis not from a voice session may be zero in certain instances in which noother application on the computing device is communicating with a remotedevice connected to the internet.

A computing device may perform the determination 160 as a result of acall beginning while the computing device is in any of modes 110, 120,or 130. In some implementations, the determination 160 is firstperformed once the computing device has already begun a telephone call,with data for the telephone call initially being routed to the computingdevice using, for example, multiple radio chains of the WLAN (see mode120).

As illustrated in FIG. 1, a computing device that is communicating overa WWAN may regularly perform the determination 160 regarding whether tocontinue to use the WWAN or whether to switch to a single WLAN radiochain. Should the computing device select to communicate using a singleWLAN radio chain (mode 130), the computing device may thereafter performa different determination 170 (described in additional detail withrespect to FIG. 3) regarding whether to continue using the single WLANradio chain (mode 130) or whether to switch to the WWAN (mode 110).

This determination 170 may involve the computing device determining toswitch from the single WLAN radio chain (mode 130) to the WWAN (mode110) if certain criteria are satisfied. A first example criteria caninclude the level of non-voice data that is queued for communicationbeing greater than a second threshold level of data, where the secondthreshold level of data may be higher than the threshold level used indetermination 160. In other words, the computing device may determine toswitch from the WWAN to using a single WLAN radio chain if the dataqueued for communication falls beneath a certain level, but the dataqueue rising back above that certain level may not cause the computingdevice to switch back to the WWAN. Rather, the data queued forcommunication may need to rise to a larger amount, for example, toprevent repeated switching between the WWAN and the single WLAN radiochain.

A second example criteria is the quality of the WLAN communicationdropping below a threshold quality level. The threshold quality levelmay be based on one or more of a level of latency, a power level ofreceived communications, a bit error level, or a packet error level, forexample. Regardless, the determination 160 for switching from the WWAN(mode 110) to the single WLAN radio chain (mode 130) may be differentthan the determination 170 for switching from the single WLAN radiochain (mode 130) to the WWAN (mode 110).

In some implementations, either or both of the determinations 160 and170 may be overridden based on user input. For example, a device usercan interact with a configuration interface of the computing device tospecify that communications session data (e.g., voice data and non-voicedata) are to be transmitted and received using either the WWAN (mode110) or the WLAN. If the device user were to specify that communicationssession data are to be transmitted and received using the WLAN, forexample, the computing device can perform a determination 180 fortransmitting and receiving communications session data over the WLANusing either a single radio chain (mode 130) or multiple radio chains(120).

Before describing the determinations 160, 170, and 180 in additionaldetail with respect to FIGS. 2, 3, and 4, respectively, this disclosurewill discuss some of the differences between an example WLAN and anexample WWAN. An example WLAN includes a Wi-Fi network, and such anetwork may include a first radio chain transmitting with a centerfrequency at approximately 2.4 GHz and a second radio chain transmittingwith a center frequency at approximately 5.8 GHz, and at distances lessthan 1000 feet. In contrast, an example WWAN may transmit using one ormore radio chains having respective center frequencies between 500 and2000 MHz, at distances of over a mile.

The example WLAN may be present at a particular venue, such as a home orbusiness, and is sometimes free to use. A user may have to entercredentials (e.g., a username and password) to use the WLAN. A user mayonly be able to communicate with the WLAN while near the venue, and theWLAN may not include multiple access points geographically distributedacross multiple cities or multiple states. In contrast, the example WWANmay require a user to pay a monthly fee, and may provide that user acertain data allowance per month. The example WWAN may have basestations that are geographically distributed over multiple cities orstates, and may be configured to handle handoffs from one base stationto the next as a user travels by car without a drop in coverage. A usermay not have to enter a username and credentials to access the WWAN, butthe device with which the user is connecting may need to have a SIM cardthat is authenticated by the WWAN.

The WLAN may communicate using a shared medium, by which there is nocentral scheduler that controls which device on the network communicatesat which time. Rather, each device may rely on collision avoidance,where each sending device attempts to avoid collisions by transmittingonly when the sending device senses the channel to be idle. This is incontrast to an example WWAN, in which a device may be transmitted aschedule that identifies a portion of time within a repeating unit oftime (e.g., a slot or a frame) during which the device is permitted totransmit or receive data.

FIG. 2 shows a flowchart of an example process for determining whetherto communicate using a WWAN radio chain or a single WLAN radio chain. Ingeneral, the process can be performed by a computing device upondetermining that a voice communication session (e.g., a phone call, avideo conference, or another sort of voice communication session) isbeginning or is in progress. The process described with respect to FIG.2 can involve the computing device performing the determination 160(FIG. 1) of whether the computing device should communicate with theWWAN (mode 110) or with a single radio chain of the WLAN (mode 130).

At box 202, a computing device determines that it has received a requestto begin a full-duplex voice communication session with a remotecomputing system. Referring again to FIG. 1, for example, the computingdevice can determine at state 140 that a voice communication session(e.g., a phone call, a video conference, or another sort of voicecommunication session) has begun, either as a result of a device userhaving initiated the session (e.g., having placed the phone call orlaunched the video conference), or as a result of an incoming requestfrom the remote computing system to initiate the session (e.g., havingreceived a phone call or video conference invitation or initiationrequest). The remote computing system, for example, can include acomputing system of a mobile network operator or another provider ofwireless communications services. As another example, the remotecomputing system can include a computing system that hosts communicationsessions between two or more computing devices connected through theinternet.

At box 204, the computing device may include a wireless wide areanetwork (WWAN) radio chain arranged to communicate using WWAN technologyand multiple wireless local area network (WLAN) radio chains arranged tocommunicate using WLAN technology. For example, the computing device canbe a mobile computing device, such as a smartphone, cellular telephone,personal digital assistant, tablet computing device, or anotherappropriate type of mobile computing device. The computing device can beconfigured to communicate (e.g., to send and receive data) over the WWANusing the WWAN radio chain, or over the WLAN using one or more of theWLAN radio chains. The WLAN technology can include Wi-Fi technology. Forexample, the computing device can identify wireless access points thatare in range of the device, to connect to one of the wireless accesspoints, and to communicate with other computing devices over the WLANusing one or more of the WLAN radio chains. The WWAN technology caninclude cellular technology that uses one or more of Global System forMobiles (GSM), Code Division Multiple Access (CDMA), or Long-TermEvolution (LTE). For example, the computing device can connect to a basestation of the WWAN and communicate with other computing devices overthe WWAN using one or more of the cellular technologies.

Each of the multiple WLAN radio chains and the WWAN radio chain caninclude a respective amplifier and antenna. For example, a first one ofthe multiple WLAN radio chains can include a first amplifier and a firstantenna, and a second one of the multiple WLAN radio chains can includea second amplifier and a second antenna. The WWAN radio chain, forexample, can include a third amplifier and a third antenna. In thepresent example, the first antenna, the second antenna, and the thirdantenna are physically separated from each another. In general,communications using one or more of the WLAN radio chains can includeusing center channel frequencies between 2 GHz and 30 GHz. In general,communications using the WWAN radio chain can include using centerchannel frequencies between 300 MHz and 2000 MHz.

At box 206, the computing device identifies that it has wirelesslyconnected to both a WWAN access point that is communicating using theWWAN technology and a WLAN access point that is communicating using theWLAN technology. In general, the computing device can identify wirelessconnections by periodically determining whether it is in range of asuitable WWAN access point and is in range of a suitable WLAN accesspoint. For example, the computing device can periodically (e.g., once aminute, once every five minutes, once every ten minutes, or anothersuitable time interval) scan a list of base stations sent by the WWAN todetermine which of the base stations is in optimal communication range,and the computing device can receive broadcast signals from variousnearby WiFi access points of various WLANs. In the present example, thecomputing device may be in a location (e.g., a coffee shop) where it hasconnected to both the WWAN (e.g., through a base station of the WWANthat is within the WWAN communication range of the computing device) andthe WLAN (e.g., through a Wi-Fi access point that is within thecomputing device's WLAN communication range).

At box 208, the computing device determines, in response to havingidentified that it has wirelessly connected to both the WWAN accesspoint and the WLAN access point, and having determined that it hasreceived the request to begin the full-duplex voice communicationsession, whether to use the WWAN radio chain or a single one of the WLANradio chains. Referring to FIG. 1, for example, the computing device canperform the determination 160 of whether to use the WWAN radio chain(mode 110) or a single one of the WLAN radio chains (mode 130). Ingeneral, determining whether to use the WWAN radio chain or a single oneof the WLAN radio chains may be based on one or more of variouscriteria, including levels of non-voice session data, signal quality ofcommunications, amount of network congestion, and latency ofcommunications with networks.

At box 210, determining whether to use the WWAN radio chain or a singleone of the WLAN radio chains may include determining whether a level ofnon-voice session data that is queued for transmission or receipt by thecomputing device falls beneath a first threshold level of data. Forexample, the computing device may be sending and/or receiving non-voicesession data (e.g., downloading an application, sending a file,streaming audio and/or video content, etc.) when voice communicationbegins (state 140, shown in FIG. 1).

The level of non-voice session data may include one or more of an amountof data that is queued for transmission or receipt by the computingdevice and a rate at which the data is being transmitted and/orreceived. In the present example, the computing device may bedownloading data (e.g., one or more files) when voice communicationbegins. Before downloading the data, for example, the computing devicemay have received information that indicates an amount of data (e.g., asize of the one or more files) to be downloaded. While downloading thedata, for example, the computing device can track an amount of data thatis yet to be received and a rate at which the data is being received. Ifdata is being uploaded by the computing device (e.g., one or more filesare being transmitted), for example, the computing device can track anamount of data that is yet to be transmitted and a rate at which thedata is being transmitted. In some implementations, the computing devicemay track a total level of non-voice session data which includes anamount of data that is queued for transmission and an amount of datathat is queued for receipt. In some implementations, the computingdevice may separately track levels of non-voice session data that arequeued for transmission and that are queued for receipt.

At box 212, the level of non-voice session data that is queued fortransmission or receipt may include a trend level at which non-voicesession data that is queued for transmission or receipt is increasing ordecreasing. For example, the computing device can, at periodic timeintervals (e.g., 10 ms, 100 ms, 1000 ms, or another suitable timeinterval), track levels of queued non-voice session data, and storevalues corresponding to the levels in memory. The computing device canthen compare prior levels of queued non-voice session data over asliding window (e.g., the previous second, the previous five seconds,the previous ten seconds, or another suitable value), to determine thetrend level at which queued non-voice session data has been increasingor decreasing.

Other criteria that may be used instead of, or in combination withdetermining whether the level of non-voice session data that is queuedfor transmission or receipt by the computing device falls beneath afirst threshold level of data may include signal quality ofcommunications, amount of network congestion, and latency ofcommunications with networks, and are described in additional detailwith respect to FIG. 5.

At box 220, the computing device switches to using a single one of themultiple WLAN radio chains, and communicates data over the single one ofthe multiple WLAN radio chains. Communicating data over the single oneof the multiple WLAN radio chains, including voice session data from thefull-duplex voice communication session, may be in distinction to databeing communicated over more than one of the multiple WLAN radio chains,and may be in distinction to data being communicated over the WWAN radiochain, such that data is being transmitted over only the single one ofthe multiple WLAN radio chains, at least within a defined period of time(e.g., 5 ms, 50 ms, 100 ms, 1 second, 5 seconds, 30 seconds, 1 minute).

Referring again to FIG. 1, for example, the computing device switches tothe WLAN and uses a single radio chain (mode 130). The switching may beas a result of the computing device having determined that the level ofnon-voice session data that is queued for transmission or receipt by thecomputing device falls beneath the first threshold level of data. If thecomputing device determines that the level of queued non-voice sessiondata (e.g., for transmission and/or receipt) falls beneath the firstthreshold level of data (e.g., including one or more of (i) an amount ofdata, (ii) a data transfer rate, and (iii) a trend level which indicatesqueued data changes), for example, the computing device switches tousing a single one of the multiple WLAN radio chains. For example, thecomputing device may determine that, relative to the first threshold, arelatively small amount of data (or no data) is queued for transmissionand/or receipt. As another example, the computing device may determinethat, relative to the first threshold, a relatively low data transferrate is occurring (or no non-voice session data is being transferred).As another example, the computing device may determine that, relative tothe first threshold, a trend level at which non-voice session data thatis queued for transmission and/or receipt is not increasing or isdecreasing.

At box 222, the computing device had been communicating data over morethan one of the multiple WLAN radio chains immediately prior to thecomputing device switching to using the single one of the multiple WLANradio chains. For example, the computing device may have been using twoor more WLAN radio chains (e.g., the device had been in mode 120, shownin FIG. 1) to transmit and/or receive data immediately prior to state140 (also shown in FIG. 1).

At box 224, the computing device had been communicating data over theWWAN radio chain immediately prior to the computing device switching tousing the single one of the multiple WLAN radio chains. For example, thecomputing device may have been using the WWAN radio chain (e.g., thedevice had been in mode 110, shown in FIG. 1) to transmit and/or receivedata immediately prior to state 140 (also shown in FIG. 1).

At box 230, the computing device communicates data over the WWAN radiochain, including the voice session data from the full-duplex voicecommunication session. Referring again to FIG. 1, for example, thecomputing device communicates data over the WWAN (mode 110).Communicating the data over the WWAN radio chain may be a result of thecomputing device having determined that the level of non-voice sessiondata that is queued for transmission or receipt by the computing devicedoes not fall beneath the first threshold level of data. If thecomputing device determines that the level of queued non-voice sessiondata (e.g., for transmission and/or receipt) does not fall beneath thefirst threshold level of data (e.g., including one or more of (i) anamount of data, (ii) a data transfer rate, and (iii) a trend level whichindicates queued data changes), for example, the computing device usesthe WWAN radio chain. For example, the computing device may determinethat, relative to the first threshold, a relatively large amount of datais queued for transmission and/or receipt. As another example, thecomputing device may determine that, relative to the first threshold, arelatively high data transfer rate is occurring. As another example, thecomputing device may determine that, relative to the first threshold, atrend level at which non-voice session data that is queued fortransmission and/or receipt is increasing.

At box 232, the computing device had been communicating data over morethan one of the multiple WLAN radio chains immediately prior to thecomputing device communicating data over the WWAN radio chain. Forexample, the computing device may have been using two or more WLAN radiochains (e.g., the device had been in mode 120, shown in FIG. 1) totransmit and/or receive data immediately prior to state 140 (also shownin FIG. 1).

At box 234, the computing device may continue communicating data overthe WWAN radio chain. For example, the computing device may have beenusing the WWAN radio chain (e.g., the device had been in mode 110, shownin FIG. 1) to transmit and/or receive data immediately prior to state140 (also shown in FIG. 1).

FIG. 3 shows a flowchart of an example process for determining whetherto switch from communicating using a single WLAN radio chain to using aWWAN radio chain. In general, the process can be performed by acomputing device during a voice communication session (e.g., a phonecall, a video conference, or another sort of voice communicationsession). Referring to FIG. 1, for example, the computing device canperform the determination 170 of whether to switch from the single WLANradio chain (mode 130) to the WWAN (mode 110). In general, determiningwhether switch from the single WLAN radio chain to the WWAN may be basedon one or more of various criteria, including levels of non-voicesession data, signal quality of communications, amount of networkcongestion, and latency of communications with networks.

At box 302, a computing device determines, while the computing device iscommunicating data over the single one of the multiple WLAN radiochains, whether the level of non-voice session data that is queued fortransmission or receipt by the computing device is greater than a secondthreshold level of data. For example, the computing device cancommunicate over a WLAN using the single WLAN radio chain, includingtransmitting and receiving data associated with a full-duplex voicecommunication session with a remote computing system, and possiblytransmitting and receiving non-voice session data. While the device isparticipating in the full-duplex communication session over the WLANusing the single WLAN radio chain, for example, the computing device maytrack a level of non-voice session data that is also being communicated,including an amount of data that is queued for transmission and anamount of data that is queued for receipt.

At box 304, the second threshold level of data may be greater than thefirst threshold level of data. As with the first threshold level ofdata, the second threshold level of data may include one or more of anamount of non-voice session data that is queued for transmission orreceipt by the computing device, a rate at which the data is beingtransmitted and/or received, and a trend level at which non-voicesession data that is queued for transmission or receipt is increasing ordecreasing. However, the second threshold level of data may configuredto be greater than the first threshold level of data, for example, toprevent repeated switching between the WWAN and the single WLAN radiochain, saving battery usage.

Other criteria that may be used instead of, or in combination withdetermining whether the level of non-voice session data that is queuedfor transmission or receipt by the computing device falls beneath asecond threshold level of data may include signal quality ofcommunications, amount of network congestion, and latency ofcommunications with networks, and are described in additional detailwith respect to FIG. 5.

At box 306, the computing device switches from using the single one ofthe multiple WLAN radio chains to using the WWAN radio chain. Referringagain to FIG. 1, for example, the computing device switches from theWLAN, using a single radio chain (mode 130), to the WWAN (mode 110). Theswitching may be a result of the computing device having determined thatthe level of non-voice session data that is queued for transmission orreceipt by the computing device is greater than the second thresholdlevel of data. If the computing device determines that the level ofqueued non-voice session data (e.g., for transmission and/or receipt) isabove the second threshold level of data (e.g., including one or more of(i) an amount of data, (ii) a data transfer rate, and (iii) a trendlevel which indicates queued data changes), for example, the computingdevice switches to using the WWAN radio chain. For example, thecomputing device may determine that, relative to the second threshold, arelatively large amount of data is queued for transmission and/orreceipt. As another example, the computing device may determine that,relative to the second threshold, a relatively high data transfer rateis occurring. As another example, the computing device may determinethat, relative to the second threshold, a trend level at which non-voicesession data that is queued for transmission and/or receipt isincreasing.

At box 308, the computing device communicates data over the WWAN radiochain. For example, the computing device can communicate non-voicesession data over the WWAN radio chain, including transmitting and/orreceiving data over the WWAN. At box 310, the communicated data mayinclude voice session data from the full-duplex voice communicationsession. For example, in addition to communicating the non-voice sessiondata, the computing device can communicate the voice session data overthe WWAN radio chain.

At box 312, after determining that the level of non-voice session datathat is queued for transmission or receipt by the computing device isbelow the second threshold level of data (or as an alternative toperforming the determination of box 302), the computing devicedetermines, while the computing device is communicating data over thesingle one of the multiple WLAN radio chains, whether a quality of WLANcommunications drops below a threshold quality level. Determiningwhether a quality of WLAN communications drops below the thresholdquality level, for example, can include one or more of determiningwhether a signal quality of communications with the WLAN, an amount ofnetwork congestion on the WLAN, and/or that a latency of communicationthe WLAN drops below respective threshold values, described inadditional detail with respect to FIG. 5.

At box 306, the computing device switches from using the single one ofthe multiple WLAN radio chains to using the WWAN radio chain, as aresult of having determined that the quality of WLAN communicationsdropped below the threshold quality level. Referring again to FIG. 1,for example, the computing device switches from the WLAN, using a singleradio chain (mode 130), to the WWAN (mode 110). The computing devicethen proceeds to communicate data over the WWAN radio chain (box 308)and no longer communicates data using the WLAN.

At box 314, the computing device continues to use the single one of themultiple WLAN radio chains, as a result of having determined that thequality of WLAN communications is above the threshold quality level. Forexample, the computing device can continue communicating over the WLAN(mode 130, shown in FIG. 1), and can periodically (e.g., once persecond, once every five seconds, once every ten seconds, or anothersuitable time interval) perform the determination of whether the levelof non-voice data that is queued for transmission or receipt by thecomputing device is greater than the second threshold level of data (box302).

FIG. 4 shows a flowchart of an example process for determining whetherto communicate using a single WLAN radio chain or at least two WLANradio chains. In general, the process can be performed by a computingdevice while the device is not engaged in a voice communication session(e.g., a phone call, a video conference, or another sort of voicecommunication session). Referring to FIG. 1, for example, the computingdevice can perform the determination 180 of whether to communicate usinga single WLAN radio chain (mode 130) rather than multiple WLAN radiochains (mode 120).

At box 402, the computing device determines whether a level of non-voicedata that is queued for transmission or receipt by the computing deviceis greater than a third threshold level of data. The third thresholdlevel of data, for example, may be different than either or both of thefirst threshold level of data (described with respect to box 210, shownin FIG. 2) and the second threshold level of data (described withrespect to box 302, shown in FIG. 3). For example, the third thresholdlevel of data may be below the first threshold level of data, betweenthe first and second threshold levels of data, or above the secondthreshold level of data.

At box 410, the computing device uses at least two of the multiple WLANradio chains. Referring again to FIG. 1, for example, the computingdevice communicates over the WLAN, using multiple radio chains (e.g.,the device enters or remains in mode 120), as a result of the computingdevice having determined that the level of non-voice data that is queuedfor transmission or receipt by the computing device is above the thirdthreshold level of data (e.g., including one or more of (i) an amount ofdata, (ii) a data transfer rate, and (iii) a trend level which indicatesqueued data changes). For example, the computing device may determinethat, relative to the third threshold, a relatively large amount of datais queued for transmission and/or receipt. As another example, thecomputing device may determine that, relative to the third threshold, arelatively high data transfer rate is occurring. As another example, thecomputing device may determine that, relative to the third threshold, atrend level at which data that is queued for transmission and/or receiptis increasing.

At box 412, the computing device implements a delay. For example, thecomputing device can delay performing another determination of whetherthe level of non-voice data that is queued for transmission or receiptby the computing device is greater than the third threshold level ofdata, until a suitable amount of time has elapsed (e.g., a second, fiveseconds, ten seconds, or another suitable amount of time).

At box 420, the computing device uses a single one of the multiple WLANradio chains. Referring again to FIG. 1, for example, the computingdevice communicates over the WLAN, using a single radio chain (e.g., thedevice enters or remains in mode 130), as a result of the computingdevice having determined that the level of non-voice data that is queuedfor transmission or receipt by the computing device is below the thirdthreshold of data (e.g., including one or more of (i) an amount of data,(ii) a data transfer rate, and (iii) a trend level which indicatesqueued data changes). For example, the computing device may determinethat, relative to the third threshold, a relatively small amount of data(or no data) is queued for transmission and/or receipt. As anotherexample, the computing device may determine that, relative to the thirdthreshold, a relatively low data transfer rate is occurring (or no datais being transferred). As another example, the computing device maydetermine that, relative to the third threshold, a trend level at whichdata that is queued for transmission and/or receipt is decreasing.

At box 422, the computing device implements a delay. For example, thecomputing device can delay performing another determination of whetherthe level of non-voice data that is queued for transmission or receiptby the computing device is greater than the third threshold level ofdata, until a suitable amount of time has elapsed (e.g., a second, fiveseconds, ten seconds, or another suitable amount of time).

FIG. 5 shows various different example mechanisms for determiningwhether to use a WWAN radio chain or a single WLAN radio chain.Referring to FIG. 1, for example, the different example mechanisms canbe used by the computing device when performing the determination 160and/or the determination 170 of whether to communicate over the WWAN(mode 110) or the WLAN, using the single radio chain (mode 130).

At box 502, the computing device determines whether to use a WWAN radiochain or a single one of the multiple WLAN radio chains. Determiningwhether to use the WWAN radio chain or a single one of the multiple WLANradio chains, for example, can include evaluating one or more factorsdescribed with respect to boxes 504, 506, 508, and 510. In someimplementations, two or more of the factors may be evaluated and weighed(e.g., using a scoring mechanism), such that at least one of the factorsmay be assigned a higher weight than other factors when determining aquality of communications and/or whether to use the WWAN radio chain ora single one of the multiple WLAN radio chains. In some implementations,evaluation of two or more factors may be performed in a predefinedorder, such that determining whether to use the WWAN radio chain or asingle one of the multiple WLAN radio chains is reflected in a decisiontree or another suitable decision structure. In some implementations,one or more of the factors may be associated with threshold values.

At box 504, determining whether to use the WWAN radio chain or thesingle one of the multiple WLAN radio chains includes determiningwhether a level of non-voice data that is queued for transmission orreceipt by the computing device falls beneath a threshold level of data.For example, the level of queued non-voice session data (e.g., fortransmission and/or receipt) can include one or more of (i) an amount ofdata, (ii) a data transfer rate, and (iii) a trend level which indicatesqueued data changes. Determining whether the level of queued non-voicesession data falls beneath the threshold level of data is described inadditional detail with respect to box 210 (shown in FIG. 2) and box 302(shown in FIG. 3).

At box 506, determining whether to use the WWAN radio chain or thesingle one of the multiple WLAN radio chains includes comparing a signalquality of communications with a WWAN base station and a signal qualityof communications with a WLAN access point. The signal quality ofcommunications with the WWAN base station, for example, may be indicatedby a signal strength of the base station, a packet error rate for databeing communicated over the WWAN, or another suitable signal qualitymetric. The signal quality of communications with the WLAN access point,for example, may be indicated by a signal strength of the access point,a packet error rate for data being communicated over the WLAN, oranother suitable signal quality metric.

At box 508, determining whether to use the WWAN radio chain or thesingle one of the multiple WLAN radio chains includes comparing anamount of congestion on a WWAN with an amount of congestion on a WLAN.The amount of congestion on the WWAN may be communicated to thecomputing device by a WWAN base station, for example, and may beindicated by a number of computing devices communicating with the WWANbase station, a percentage of available bandwidth from the WWAN basestation, or another suitable congestion metric. The amount of congestionon the WLAN may be communicated to the computing device by a WLAN accesspoint, for example, and may be indicated by a number of computingdevices communicating with the WLAN access point, a percentage ofavailable bandwidth from the WLAN access point, or another suitablecongestion metric. As another example, the amount of congestion on theWLAN may be inferred by the computing device by determining a percentageof time which the WLAN access point is available for communication.

At box 510, determining whether to use the WWAN radio chain or thesingle one of the multiple WLAN radio chains includes comparing alatency of communications with a WWAN to a latency of communicationswith a WLAN. Communications latency, for example, may be expressed as anamount of time for a data packet (e.g., a test data packet) to beprovided to or from the computing device across a network. The latencyof communications with the WWAN, for example, may be indicated by anamount of time to send and/or receive the data packet over the WWAN. Thelatency of communication with the WLAN, for example, may be indicated byan amount of time to send and/or receive the data packet over the WWAN.

Referring now to FIG. 6, a conceptual diagram of a system that may beused to implement the systems and methods described in this document isillustrated. In the system, mobile computing device 610 can wirelesslycommunicate with base station 640, which can provide the mobilecomputing device wireless access to numerous hosted services 660 througha network 650.

In this illustration, the mobile computing device 610 is depicted as ahandheld mobile telephone (e.g., a smartphone, or an applicationtelephone) that includes a touchscreen display device 612 for presentingcontent to a user of the mobile computing device 610 and receivingtouch-based user inputs. Other visual, tactile, and auditory outputcomponents may also be provided (e.g., LED lights, a vibrating mechanismfor tactile output, or a speaker for providing tonal, voice-generated,or recorded output), as may various different input components (e.g.,keyboard 614, physical buttons, trackballs, accelerometers, gyroscopes,and magnetometers).

Example visual output mechanism in the form of display device 612 maytake the form of a display with resistive or capacitive touchcapabilities. The display device may be for displaying video, graphics,images, and text, and for coordinating user touch input locations withthe location of displayed information so that the device 610 canassociate user contact at a location of a displayed item with the item.The mobile computing device 610 may also take alternative forms,including as a laptop computer, a tablet or slate computer, a personaldigital assistant, an embedded system (e.g., a car navigation system), adesktop personal computer, or a computerized workstation.

An example mechanism for receiving user-input includes keyboard 614,which may be a full qwerty keyboard or a traditional keypad thatincludes keys for the digits ‘0-9’, ‘*’, and ‘#.’ The keyboard 614receives input when a user physically contacts or depresses a keyboardkey. User manipulation of a trackball 616 or interaction with a trackpad enables the user to supply directional and rate of movementinformation to the mobile computing device 610 (e.g., to manipulate aposition of a cursor on the display device 612).

The mobile computing device 610 may be able to determine a position ofphysical contact with the touchscreen display device 612 (e.g., aposition of contact by a finger or a stylus). Using the touchscreen 612,various “virtual” input mechanisms may be produced, where a userinteracts with a graphical user interface element depicted on thetouchscreen 612 by contacting the graphical user interface element. Anexample of a “virtual” input mechanism is a “software keyboard,” where akeyboard is displayed on the touchscreen and a user selects keys bypressing a region of the touchscreen 612 that corresponds to each key.

The mobile computing device 610 may include mechanical or touchsensitive buttons 618 a-d. Additionally, the mobile computing device mayinclude buttons for adjusting volume output by the one or more speakers620, and a button for turning the mobile computing device on or off. Amicrophone 622 allows the mobile computing device 610 to convert audiblesounds into an electrical signal that may be digitally encoded andstored in computer-readable memory, or transmitted to another computingdevice. The mobile computing device 610 may also include a digitalcompass, an accelerometer, proximity sensors, and ambient light sensors.

An operating system may provide an interface between the mobilecomputing device's hardware (e.g., the input/output mechanisms and aprocessor executing instructions retrieved from computer-readablemedium) and software. Example operating systems include ANDROID, CHROME,IOS, MAC OS X, WINDOWS 7, WINDOWS PHONE 7, SYMBIAN, BLACKBERRY, WEBOS, avariety of UNIX operating systems; or a proprietary operating system forcomputerized devices. The operating system may provide a platform forthe execution of application programs that facilitate interactionbetween the computing device and a user.

The mobile computing device 610 may present a graphical user interfacewith the touchscreen 612. A graphical user interface is a collection ofone or more graphical interface elements and may be static (e.g., thedisplay appears to remain the same over a period of time), or may bedynamic (e.g., the graphical user interface includes graphical interfaceelements that animate without user input).

A graphical interface element may be text, lines, shapes, images, orcombinations thereof. For example, a graphical interface element may bean icon that is displayed on the desktop and the icon's associated text.In some examples, a graphical interface element is selectable withuser-input. For example, a user may select a graphical interface elementby pressing a region of the touchscreen that corresponds to a display ofthe graphical interface element. In some examples, the user maymanipulate a trackball to highlight a single graphical interface elementas having focus. User-selection of a graphical interface element mayinvoke a pre-defined action by the mobile computing device. In someexamples, selectable graphical interface elements further oralternatively correspond to a button on the keyboard 604. User-selectionof the button may invoke the pre-defined action.

In some examples, the operating system provides a “desktop” graphicaluser interface that is displayed after turning on the mobile computingdevice 610, after activating the mobile computing device 610 from asleep state, after “unlocking” the mobile computing device 610, or afterreceiving user-selection of the “home” button 618 c. The desktopgraphical user interface may display several graphical interfaceelements that, when selected, invoke corresponding application programs.An invoked application program may present a graphical interface thatreplaces the desktop graphical user interface until the applicationprogram terminates or is hidden from view.

User-input may influence an executing sequence of mobile computingdevice 610 operations. For example, a single-action user input (e.g., asingle tap of the touchscreen, swipe across the touchscreen, contactwith a button, or combination of these occurring at a same time) mayinvoke an operation that changes a display of the user interface.Without the user-input, the user interface may not have changed at aparticular time. For example, a multi-touch user input with thetouchscreen 612 may invoke a mapping application to “zoom-in” on alocation, even though the mapping application may have by defaultzoomed-in after several seconds.

The desktop graphical interface can also display “widgets.” A widget isone or more graphical interface elements that are associated with anapplication program that is executing, and that display on the desktopcontent controlled by the executing application program. A widget'sapplication program may launch as the mobile device turns on. Further, awidget may not take focus of the full display. Instead, a widget mayonly “own” a small portion of the desktop, displaying content andreceiving touchscreen user-input within the portion of the desktop.

The mobile computing device 610 may include one or morelocation-identification mechanisms. A location-identification mechanismmay include a collection of hardware and software that provides theoperating system and application programs an estimate of the mobiledevice's geographical position. A location-identification mechanism mayemploy satellite-based positioning techniques, base station transmittingantenna identification, multiple base station triangulation, internetaccess point IP location determinations, inferential identification of auser's position based on search engine queries, and user-suppliedidentification of location (e.g., by receiving user a “check in” to alocation).

The mobile computing device 610 may include other applications,computing sub-systems, and hardware. A call handling unit may receive anindication of an incoming telephone call and provide a user thecapability to answer the incoming telephone call. A media player mayallow a user to listen to music or play movies that are stored in localmemory of the mobile computing device 610. The mobile device 610 mayinclude a digital camera sensor, and corresponding image and videocapture and editing software. An internet browser may enable the user toview content from a web page by typing in an addresses corresponding tothe web page or selecting a link to the web page.

The mobile computing device 610 may include an antenna to wirelesslycommunicate information with the base station 640. The base station 640may be one of many base stations in a collection of base stations (e.g.,a mobile telephone cellular network) that enables the mobile computingdevice 610 to maintain communication with a network 650 as the mobilecomputing device is geographically moved. The computing device 610 mayalternatively or additionally communicate with the network 650 through aWi-Fi router or a wired connection (e.g., ETHERNET, USB, or FIREWIRE).The computing device 610 may also wirelessly communicate with othercomputing devices using BLUETOOTH protocols, or may employ an ad-hocwireless network.

A service provider that operates the network of base stations mayconnect the mobile computing device 610 to the network 650 to enablecommunication between the mobile computing device 610 and othercomputing systems that provide services 660. Although the services 660may be provided over different networks (e.g., the service provider'sinternal network, the Public Switched Telephone Network, and theInternet), network 650 is illustrated as a single network. The serviceprovider may operate a server system 652 that routes information packetsand voice data between the mobile computing device 610 and computingsystems associated with the services 660.

The network 650 may connect the mobile computing device 610 to thePublic Switched Telephone Network (PSTN) 662 in order to establish voiceor fax communication between the mobile computing device 610 and anothercomputing device. For example, the service provider server system 652may receive an indication from the PSTN 662 of an incoming call for themobile computing device 610. Conversely, the mobile computing device 610may send a communication to the service provider server system 652initiating a telephone call using a telephone number that is associatedwith a device accessible through the PSTN 662.

The network 650 may connect the mobile computing device 610 with a Voiceover Internet Protocol (VoIP) service 664 that routes voicecommunications over an IP network, as opposed to the PSTN. For example,a user of the mobile computing device 610 may invoke a VoIP applicationand initiate a call using the program. The service provider serversystem 652 may forward voice data from the call to a VoIP service, whichmay route the call over the internet to a corresponding computingdevice, potentially using the PSTN for a final leg of the connection.

An application store 666 may provide a user of the mobile computingdevice 610 the ability to browse a list of remotely stored applicationprograms that the user may download over the network 650 and install onthe mobile computing device 610. The application store 666 may serve asa repository of applications developed by third-party applicationdevelopers. An application program that is installed on the mobilecomputing device 610 may be able to communicate over the network 650with server systems that are designated for the application program. Forexample, a VoIP application program may be downloaded from theApplication Store 666, enabling the user to communicate with the VoIPservice 664.

The mobile computing device 610 may access content on the internet 668through network 650. For example, a user of the mobile computing device610 may invoke a web browser application that requests data from remotecomputing devices that are accessible at designated universal resourcelocations. In various examples, some of the services 660 are accessibleover the internet.

The mobile computing device may communicate with a personal computer670. For example, the personal computer 670 may be the home computer fora user of the mobile computing device 610. Thus, the user may be able tostream media from his personal computer 670. The user may also view thefile structure of his personal computer 670, and transmit selecteddocuments between the computerized devices.

A voice recognition service 672 may receive voice communication datarecorded with the mobile computing device's microphone 622, andtranslate the voice communication into corresponding textual data. Insome examples, the translated text is provided to a search engine as aweb query, and responsive search engine search results are transmittedto the mobile computing device 610.

The mobile computing device 610 may communicate with a social network674. The social network may include numerous members, some of which haveagreed to be related as acquaintances. Application programs on themobile computing device 610 may access the social network 674 toretrieve information based on the acquaintances of the user of themobile computing device. For example, an “address book” applicationprogram may retrieve telephone numbers for the user's acquaintances. Invarious examples, content may be delivered to the mobile computingdevice 610 based on social network distances from the user to othermembers in a social network graph of members and connectingrelationships. For example, advertisement and news article content maybe selected for the user based on a level of interaction with suchcontent by members that are “close” to the user (e.g., members that are“friends” or “friends of friends”).

The mobile computing device 610 may access a personal set of contacts676 through network 650. Each contact may identify an individual andinclude information about that individual (e.g., a phone number, anemail address, and a birthday). Because the set of contacts is hostedremotely to the mobile computing device 610, the user may access andmaintain the contacts 676 across several devices as a common set ofcontacts.

The mobile computing device 610 may access cloud-based applicationprograms 678. Cloud-computing provides application programs (e.g., aword processor or an email program) that are hosted remotely from themobile computing device 610, and may be accessed by the device 610 usinga web browser or a dedicated program. Example cloud-based applicationprograms include GOOGLE DOCS word processor and spreadsheet service,GOOGLE GMAIL webmail service, and PICASA picture manager.

Mapping service 680 can provide the mobile computing device 610 withstreet maps, route planning information, and satellite images. Anexample mapping service is GOOGLE MAPS. The mapping service 680 may alsoreceive queries and return location-specific results. For example, themobile computing device 610 may send an estimated location of the mobilecomputing device and a user-entered query for “pizza places” to themapping service 680. The mapping service 680 may return a street mapwith “markers” superimposed on the map that identify geographicallocations of nearby “pizza places.”

Turn-by-turn service 682 may provide the mobile computing device 610with turn-by-turn directions to a user-supplied destination. Forexample, the turn-by-turn service 682 may stream to device 610 astreet-level view of an estimated location of the device, along withdata for providing audio commands and superimposing arrows that direct auser of the device 610 to the destination.

Various forms of streaming media 684 may be requested by the mobilecomputing device 610. For example, computing device 610 may request astream for a pre-recorded video file, a live television program, or alive radio program. Example services that provide streaming mediainclude YOUTUBE and PANDORA.

A micro-blogging service 686 may receive from the mobile computingdevice 610 a user-input post that does not identify recipients of thepost. The micro-blogging service 686 may disseminate the post to othermembers of the micro-blogging service 686 that agreed to subscribe tothe user.

A search engine 688 may receive user-entered textual or verbal queriesfrom the mobile computing device 610, determine a set ofinternet-accessible documents that are responsive to the query, andprovide to the device 610 information to display a list of searchresults for the responsive documents. In examples where a verbal queryis received, the voice recognition service 672 may translate thereceived audio into a textual query that is sent to the search engine.

These and other services may be implemented in a server system 690. Aserver system may be a combination of hardware and software thatprovides a service or a set of services. For example, a set ofphysically separate and networked computerized devices may operatetogether as a logical server system unit to handle the operationsnecessary to offer a service to hundreds of computing devices. A serversystem is also referred to herein as a computing system.

In various implementations, operations that are performed “in responseto” or “as a consequence of” another operation (e.g., a determination oran identification) are not performed if the prior operation isunsuccessful (e.g., if the determination was not performed). Operationsthat are performed “automatically” are operations that are performedwithout user intervention (e.g., intervening user input). Features inthis document that are described with conditional language may describeimplementations that are optional. In some examples, “transmitting” froma first device to a second device includes the first device placing datainto a network for receipt by the second device, but may not include thesecond device receiving the data. Conversely, “receiving” from a firstdevice may include receiving the data from a network, but may notinclude the first device transmitting the data.

“Determining” by a computing system can include the computing systemrequesting that another device perform the determination and supply theresults to the computing system. Moreover, “displaying” or “presenting”by a computing system can include the computing system sending data forcausing another device to display or present the referenced information.

FIG. 7 is a block diagram of computing devices 700, 750 that may be usedto implement the systems and methods described in this document, aseither a client or as a server or plurality of servers. Computing device700 is intended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 750 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,and other similar computing devices. The components shown here, theirconnections and relationships, and their functions, are meant to beexamples only, and are not meant to limit implementations describedand/or claimed in this document.

Computing device 700 includes a processor 702, memory 704, a storagedevice 706, a high-speed interface 708 connecting to memory 704 andhigh-speed expansion ports 710, and a low speed interface 712 connectingto low speed bus 714 and storage device 706. Each of the components 702,704, 706, 708, 710, and 712, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 702 can process instructions for executionwithin the computing device 700, including instructions stored in thememory 704 or on the storage device 706 to display graphical informationfor a GUI on an external input/output device, such as display 716coupled to high-speed interface 708. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices700 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 704 stores information within the computing device 700. Inone implementation, the memory 704 is a volatile memory unit or units.In another implementation, the memory 704 is a non-volatile memory unitor units. The memory 704 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 706 is capable of providing mass storage for thecomputing device 700. In one implementation, the storage device 706 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 704, the storage device 706,or memory on processor 702.

The high-speed controller 708 manages bandwidth-intensive operations forthe computing device 700, while the low speed controller 712 manageslower bandwidth-intensive operations. Such allocation of functions is anexample only. In one implementation, the high-speed controller 708 iscoupled to memory 704, display 716 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 710, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 712 is coupled to storage device 706 and low-speed expansionport 714. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 700 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 720, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 724. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 722. Alternatively, components from computing device 700 may becombined with other components in a mobile device (not shown), such asdevice 750. Each of such devices may contain one or more of computingdevice 700, 750, and an entire system may be made up of multiplecomputing devices 700, 750 communicating with each other.

Computing device 750 includes a processor 752, memory 764, aninput/output device such as a display 754, a communication interface766, and a transceiver 768, among other components. The device 750 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 750, 752,764, 754, 766, and 768, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 752 can execute instructions within the computing device750, including instructions stored in the memory 764. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. Additionally, the processor may beimplemented using any of a number of architectures. For example, theprocessor may be a CISC (Complex Instruction Set Computers) processor, aRISC (Reduced Instruction Set Computer) processor, or a MISC (MinimalInstruction Set Computer) processor. The processor may provide, forexample, for coordination of the other components of the device 750,such as control of user interfaces, applications run by device 750, andwireless communication by device 750.

Processor 752 may communicate with a user through control interface 758and display interface 756 coupled to a display 754. The display 754 maybe, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display)display or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 756 may compriseappropriate circuitry for driving the display 754 to present graphicaland other information to a user. The control interface 758 may receivecommands from a user and convert them for submission to the processor752. In addition, an external interface 762 may be provide incommunication with processor 752, so as to enable near areacommunication of device 750 with other devices. External interface 762may provided, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 764 stores information within the computing device 750. Thememory 764 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 774 may also be provided andconnected to device 750 through expansion interface 772, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 774 may provide extra storage space fordevice 750, or may also store applications or other information fordevice 750. Specifically, expansion memory 774 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 774may be provide as a security module for device 750, and may beprogrammed with instructions that permit secure use of device 750. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 764, expansionmemory 774, or memory on processor 752 that may be received, forexample, over transceiver 768 or external interface 762.

Device 750 may communicate wirelessly through communication interface766, which may include digital signal processing circuitry wherenecessary. Communication interface 766 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 768. In addition, short-range communication may occur, suchas using a Bluetooth, Wi-Fi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 770 mayprovide additional navigation- and location-related wireless data todevice 750, which may be used as appropriate by applications running ondevice 750.

Device 750 may also communicate audibly using audio codec 760, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 760 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 750. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 750.

The computing device 750 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 780. It may also be implemented as part of asmartphone 782, personal digital assistant, or other similar mobiledevice.

Additionally computing device 700 or 750 can include Universal SerialBus (USB) flash drives. The USB flash drives may store operating systemsand other applications. The USB flash drives can include input/outputcomponents, such as a wireless transmitter or USB connector that may beinserted into a USB port of another computing device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), peer-to-peernetworks (having ad-hoc or static members), grid computinginfrastructures, and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Although a few implementations have been described in detail above,other modifications are possible. Moreover, other mechanisms forperforming the systems and methods described in this document may beused. In addition, the logic flows depicted in the figures do notrequire the particular order shown, or sequential order, to achievedesirable results. Other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherimplementations are within the scope of the following claims.

What is claimed is:
 1. A computer-implemented method for selecting awireless transmission mechanism, comprising: determining, by a computingdevice, that the computing device has received a request to begin afull-duplex voice communication session with a remote computing system,wherein the computing device includes a wireless wide area network(WWAN) radio chain arranged to communicate using WWAN technology andmultiple wireless local area network (WLAN) radio chains arranged tocommunicate using WLAN technology; identifying, by the computing device,that the computing device has wirelessly connected to both a WWAN accesspoint that is communicating using the WWAN technology and a WLAN accesspoint that is communicating using the WLAN technology; determining, bythe computing device in response to having identified that the computingdevice has wirelessly connected to both the WWAN access point and theWLAN access point and having determined that the computing device hasreceived the request to begin the full-duplex voice communicationsession, whether a level of non-voice session data that is queued fortransmission or receipt by the computing device falls beneath athreshold level of data; and switching, by the computing device as aresult of the computing device having determined that the level ofnon-voice session data that is queued for transmission or receipt by thecomputing device falls beneath the threshold level of data, to using asingle one of the multiple WLAN radio chains, and communicating dataover the single one of the multiple WLAN radio chains, including voicesession data from the full-duplex voice communication session, indistinction to communicating data over more than one of the multipleWLAN radio chains, wherein communicating data over the single one of themultiple WLAN radio chains includes transmitting and receiving the voicesession data, and transmitting or receiving the non-voice session data.2. The computer-implemented method of claim 1, wherein the computingdevice had been communicating data over more than one of the multipleWLAN radio chains immediately prior to the computing device switching tousing the single one of the multiple WLAN radio chains.
 3. Thecomputer-implemented method of claim 1, wherein the computing device isconfigured to communicate data over the WWAN radio chain, including thevoice session data from the full-duplex voice communication session, asa result of the computing device having determined that the level ofnon-voice session data that is queued for transmission or receipt by thecomputing device does not fall beneath the threshold level of data. 4.The computer-implemented method of claim 1, further comprising:determining, by the computing device and while the computing device iscommunicating data over the single one of the multiple WLAN radiochains, that a quality of WLAN communications drops below a thresholdquality level; and switching, by the computing device as a result of thecomputing device having determined that the quality of WLANcommunications dropped below the threshold quality level, from using thesingle one of the multiple WLAN radio chains to using the WWAN radiochain, and communicating data over the WWAN radio chain, including voicesession data from the full-duplex voice communication session.
 5. Thecomputer-implemented method of claim 1, further comprising: determining,by the computing device and while the computing device is communicatingdata over the single one of the multiple WLAN radio chains, that thelevel of non-voice session data that is queued for transmission orreceipt by the computing device is greater than a second threshold levelof data, wherein the second threshold level of data is greater than thefirst threshold level of data; and switching, by the computing device asa result of the computing device having determined that the level ofnon-voice session data that is queued for transmission or receipt by thecomputing device is greater than the second threshold level of data,from using the single one of the multiple WLAN radio chains to using theWWAN radio chain, and communicating data over the WWAN radio chain,including voice session data from the full-duplex voice communicationsession.
 6. The computer-implemented method of claim 1, wherein thecomputing device communicating data over the single one of the multipleWLAN radio chains, including the voice session data from the full-duplexvoice communication session, is further in distinction to the computingdevice communicating data over the WWAN radio chain, such that data isbeing transmitted over only the single one of the multiple WLAN radiochains.
 7. The computer-implemented method of claim 1, wherein: thesingle one of the multiple WLAN radio chains includes a first amplifierand a first antenna; a second one of the multiple WLAN radio chainsincludes a second amplifier and a second antenna; the WWAN radio chainincludes a third amplifier and a third antenna; and the first antenna,the second antenna, and the third antenna are physically separated fromeach another.
 8. The computer-implemented method of claim 1, wherein:the WLAN technology comprises Wi-Fi technology; and the WWAN technologycomprises cellular technology that uses one or more of Global System forMobiles (GSM), Code Division Multiple Access (CDMA), or Long-TermEvolution (LTE).
 9. The computer-implemented method of claim 1, wherein:communications using one or more of the WLAN radio chains communicateusing center channel frequencies between 2 GHz and 30 GHz; andcommunications using the WWAN radio chain communicate using centerchannel frequencies between 300 MHz and 2000 MHz.
 10. Thecomputer-implemented method of claim 1, wherein the level of non-voicesession data that is queued for transmission or receipt comprises atrend level at which non-voice session data that is queued fortransmission or receipt is increasing or decreasing.
 11. A computingdevice, comprising: a wireless wide area network (WWAN) radio chainarranged to communicate using wireless WWAN technology; multiplewireless local area network (WLAN) radio chains arranged to communicateusing WLAN technology; one or more processors; and one or morecomputer-readable devices including instructions that, when executed bythe one or more processors, cause performance of operations thatinclude: determining, by the computing device, that the computing devicehas received a request to begin a full-duplex voice communicationsession with a remote computing system; identifying, by the computingdevice, that the computing device has wirelessly connected to both aWWAN access point that is communicating using the WWAN technology and aWLAN access point that is communicating using the WLAN technology;determining, by the computing device in response to having identifiedthat the computing device has wirelessly connected to both the WWANaccess point and the WLAN access point and having determined that thecomputing device has received the request to begin the full-duplex voicecommunication session, whether a level of non-voice session data that isqueued for transmission or receipt by the computing device falls beneatha threshold level of data; and switching, by the computing device as aresult of the computing device having determined that the level ofnon-voice session data that is queued for transmission or receipt by thecomputing device falls beneath the threshold level of data, to using asingle one of the multiple WLAN radio chains, and communicating dataover the single one of the multiple WLAN radio chains, including voicesession data from the full-duplex voice communication session, indistinction to communicating data over more than one of the multipleWLAN radio chains, wherein communicating data over the single one of themultiple WLAN radio chains includes transmitting and receiving the voicesession data, and transmitting or receiving the non-voice session data.12. The computing device of claim 11, wherein the computing device hadbeen communicating data over more than one of the multiple WLAN radiochains immediately prior to the computing device switching to using thesingle one of the multiple WLAN radio chains.
 13. The computing deviceof claim 11, wherein the computing device is configured to communicatedata over the WWAN radio chain, including the voice session data fromthe full-duplex voice communication session, as a result of thecomputing device having determined that the level of non-voice sessiondata that is queued for transmission or receipt by the computing devicedoes not fall beneath the threshold level of data.
 14. The computingdevice of claim 11, further comprising: determining, by the computingdevice and while the computing device is communicating data over thesingle one of the multiple WLAN radio chains, that a quality of WLANcommunications drops below a threshold quality level; and switching, bythe computing device as a result of the computing device havingdetermined that the quality of WLAN communications dropped below thethreshold quality level, from using the single one of the multiple WLANradio chains to using the WWAN radio chain, and communicating data overthe WWAN radio chain, including voice session data from the full-duplexvoice communication session.
 15. The computing device of claim 11,further comprising: determining, by the computing device and while thecomputing device is communicating data over the single one of themultiple WLAN radio chains, that the level of non-voice session datathat is queued for transmission or receipt by the computing device isgreater than a second threshold level of data, wherein the secondthreshold level of data is greater than the first threshold level ofdata; and switching, by the computing device as a result of thecomputing device having determined that the level of non-voice sessiondata that is queued for transmission or receipt by the computing deviceis greater than the second threshold level of data, from using thesingle one of the multiple WLAN radio chains to using the WWAN radiochain, and communicating data over the WWAN radio chain, including voicesession data from the full-duplex voice communication session.
 16. Thecomputing device of claim 11, wherein the computing device communicatingdata over the single one of the multiple WLAN radio chains, includingthe voice session data from the full-duplex voice communication session,is further in distinction to the computing device communicating dataover the WWAN radio chain, such that data is being transmitted over onlythe single one of the multiple WLAN radio chains.
 17. The computingdevice of claim 11, wherein: the single one of the multiple WLAN radiochains includes a first amplifier and a first antenna; a second one ofthe multiple WLAN radio chains includes a second amplifier and a secondantenna; the WWAN radio chain includes a third amplifier and a thirdantenna; and the first antenna, the second antenna, and the thirdantenna are physically separated from each another.
 18. The computingdevice of claim 11, wherein: the WLAN technology comprises Wi-Fitechnology; and the WWAN technology comprises cellular technology thatuses one or more of Global System for Mobiles (GSM), Code DivisionMultiple Access (CDMA), or Long-Term Evolution (LTE).
 19. The computingdevice of claim 11, wherein: communications using one or more of theWLAN radio chains communicate using center channel frequencies between 2GHz and 30 GHz; and communications using the WWAN radio chaincommunicate using center channel frequencies between 300 MHz and 2000MHz.
 20. The computing device of claim 11, wherein the level ofnon-voice session data that is queued for transmission or receiptcomprises a trend level at which non-voice session data that is queuedfor transmission or receipt is increasing or decreasing.
 21. Thecomputer-implemented method of claim 5, wherein the computing device hadbeen communicating data over more than one of the multiple WLAN radiochains immediately prior to the computing device switching to using thesingle one of the multiple WLAN radio chains.
 22. Thecomputer-implemented method of claim 5, wherein the computing device hadbeen communicating data over the WWAN radio chain immediately prior tothe computing device switching to using the single one of the multipleWLAN radio chains.